In performing data transmission using various media such as cable, telephone line, satellite communication, etc., it is conventional for the data to be sent from one device to one or more receiving devices. The data is first fragmented, or segmented, into packets and then the packets transmitted, or broadcast. The term “packet” is used herein and conventionally to indicate a sequence of bytes of digital data and represents the smallest unit of transmission and reception. Hereafter, a “device” is defined as a hardware element, usually having a software component, capable of receiving and/or transmitting data packets. Examples of such devices include computers, GPRS mobile phones and network equipment.
The term “content”, as used herein, indicates data that is segmented into a sequence of packets. The data contained within the content could be a file, or part of a file, part of a data stream, or any collection of data. The content can comprise pure data, or audio and video data streams, or of any combination. The content is sent in sequentially transmitted packets from a sender device to one or more receiving devices.
The sending and receiving devices typically run software programs in conjunction with a computer, whose purpose at the sender device is to fragment the content to be sent into the packets, and at the receiver device to reassemble the packets received into the original content.
Bandwidth is conventionally defined and used herein to mean the amount of data that can be transmitted over the media in a given time frame, for example, 10 Mbps (10 million bits per second). Essentially, this is the speed of the transmission, that is, the speed at which data of the content is sent from the sending device to the receiving devices. Each transmitting-receiving system has a certain bandwidth capability that is defined by various factors, such as the type of media used for the transmission and the hardware and software equipment used for transmission and reception of the data at the sending and receiving devices. For example, a broadband cable medium has a larger bandwidth capability than a telephone line.
Various types of protocols are used to transmit the data packets forming the content. Some protocols may be considered to be “unreliable”, herein meaning any transmission protocol that provides best-effort delivery of packets, and in particular, does not perform automatic re-transmission of lost or corrupted packets. Examples of “unreliable” protocols currently in common use include unicast and multicast User Datagram Protocol (UDP), ATM Adaption Layer (AAL) Types 3/4 and 5 in non-assured transmission mode, AppleTalk DDP datagrams, and unicast and broadcast MPEG-2 transport streams.
Often, data from different files, that is, different content, is to be transmitted at the same time over the same media. For example, if a particular system has a 10 Mbps bandwidth transmission capability, the packets of two different contents can be transmitted at the same time in separate streams, for example, each stream of 5 Mbps bandwidth. In various commercial applications, portions of the available bandwidth of a given media are sold, or leased to several different customers for use at the same time.
Some applications require that packets are to be received in a regular and timely fashion, for example, for audio and video transmissions in which it is important that the jitter (i.e., the amount of variation in the end-to-end packet transit time) is kept as low as possible. Increasing reliability at the receiving device implies use of a high precision control of the bandwidth at the sending device, especially for broadband applications.
In general, the bandwidth usage of a broadcast application is selected according to network load and speed, leased bandwidth capacity, and processing speed of the receiving device. The bandwidth allocated for a given transmission is hereafter referred to as the “target bandwidth” (BT). During the transmission, the actual bandwidth used can vary relative to the selected target bandwidth.
As the broadcast takes place, the bandwidth varies and can be measured at any time. The “instantaneous bandwidth” is the bandwidth measured in the shortest measurable time. For example, if the bandwidth usage is regularly checked once per second, the instantaneous bandwidth is computed by dividing the quantity of data transferred in that time frame (in this case 1 second) by that time interval.
The broadcast of the content has an “average (or mean) bandwidth” BM. This is the total amount of data transmitted during a transmission divided by the transmission duration. The terms “mean bandwidth” and “average bandwidth” are used interchangeably herein.
Since the content is transmitted in packets, there is a pause, or wait time (tw), between the start of transmission of successive packets. The wait time between packets is related to the bandwidth used during transmission of a content. For example, increasing the wait time between packets while maintaining a fixed packet size results in less data transmitted during a given time, and vice versa.
If data is sent without a precise control relative to the target bandwidth, various problems can arise. Basically, there are three different scenarios that can cause a problem:
(1) the average bandwidth BM is too high relative to the target bandwidth BT value;
(2) the average bandwidth BM is too low relative to the target bandwidth BT value;
(3) the average bandwidth BM is equal, or very close, to the target bandwidth BT, but the instantaneous bandwidth values measured during the transmission are different from the target bandwidth. This type of transmission is hereafter referred to as heterogeneous, i.e., contains peaks.
The problems caused by the different scenarios described above can adversely affect different components and structures of the system that receive the data, such as routing and switching devices and the destination receiver devices. This is described below.
(1) Sending data packets too fast. Broadcasting of the data at a speed above the target bandwidth BT usually results in substantial packet losses. Loss of packets reduces the integrity of the data transmission. Also, too high a transmission speed can cause congestion if routing devices are not able to buffer the incoming data stream. The same problem can affect encapsulators if data is sent to a satellite uplink. Here, entire series of packets can be lost. At the receiving device side, packet reassembly can be difficult if the hardware or software application program processing the received data is not designed for an incoming data stream speed higher than the bandwidth mean (average) value. Moreover, a local area network (LAN) to which the receiving devices are connected can experience congestion if no traffic buffering mechanism is provided between the data transmitter and the receiving devices.
(2) Sending data packets too slow. If the packets are transmitted at a speed lower than the specified target bandwidth, no losses of data packets should be experienced. However, a resource waste is caused, especially if the connection between the data transmitter and receiving devices is purchased or leased on a bandwidth usage basis instead of on a transmitted data amount basis. Also, audio and video streaming quality can be affected if the receiving data rate is too low. That is, the received sound and video will be intermittent, garbled, or otherwise distorted
(3) Peaks in bandwidth usage. Even when the average output transmission bandwidth is close to the target bandwidth does not always guarantee that the data stream will be free of problems. For example, there can be bandwidth usage peaks at any instant during transmission. Also, if the packets are not homogeneously distributed during the transmission, i.e., a fairly constant time between the successive packets, packet clustering occurs that causes an increase or decrease of the bandwidth used at a given instant, this being the instantaneous bandwidth. As a result, the same problems described above for transmissions with mean bandwidth higher or lower than the target bandwidth can arise, although the adverse affects are experienced to a lesser degree.
Another parameter that can be considered is the transmission burstiness, which is defined as:
  Burstiness  =            B      peak              B      M      where BM is the mean bandwidth of a transmission content, and Bpeak is the highest of the absolute instantaneous bandwidth values measured during a transmission. That is:                Bpeak=max(B[t,t+Δt])        B[t,t+Δt]: instantaneous bandwidth B measured in the interval included between t and t+Δt. Ideally, the burstiness should tend to one. That is, the bandwidth being used should be centered at BT. Ideally, BM=BT. Note also that under the same conditions of burstiness, the transmission homogeneity could be different, since no information is provided in this value about the recurrence of Bpeak. In fact, the burstiness value says how large the peak is relative to the mean transmission bandwidth BM, but not how many times the peak is repeated during a transmission. That is, a transmission can experience 1 or 1000 peaks, but the value Bpeak is the same in most or all cases. Also, no information is provided about the homogeneity of the transmission.        
Accordingly, it would be desirable to be able to better control the bandwidth usage for the transmission of packets containing any type and different amounts of content. Prior attempts to solve the various problems discussed above typically enforce a maximum bandwidth. That is, the transmission protocol is such so as to intervene when a maximum value bandwidth is exceeded, but does not intervene when the bandwidth usage is lower than the maximum. Other existing solutions correct existing traffic streams. That is, a protocol is used to solve congestion problems caused by senders without inbuilt traffic control. Still other existing solutions discard packets when buffer space is exceeded. Some of the solutions of this type discard packets using an algorithm, such as the “leaky bucket” algorithm (Tanenbaum, Computer Networks, 3rd Edition, p. 380, Prentice Hall). Other solutions permit a certain amount of burstiness in the output stream using an algorithm such as the “token bucket” algorithm (Tanenbaum, p. 381).
Prior application Ser. No. 10/062,830, filed Jan. 31, 2002, which is assigned to the same Assignee, the entirety of which is herein incorporated by reference, provides a method and apparatus by which the bandwidth can be held more closely to a desired target bandwidth BT value by properly selecting the pause (wait time tw) between the successive packets and the packets are transmitted using the selected wait time during the transmission of the content. The method and system of that application determines the wait time tw between packets in accordance with a novel algorithm developed and implemented that relates the desired size P of the packets of a content to be transmitted to the desired target bandwidth BT. The parameters of desired target bandwidth BT and size of the packets P are provided or selected, and from these the wait time tw is computed. By properly selecting and controlling the wait, or pause, time pause tw, between the transmission of the successive packets the transmission of the content at the desired target bandwidth is more closely controlled and maintained at the selected value.
The invention of that application can be implemented in software and/or hardware. In a preferred embodiment of that invention, the precision of the bandwidth control is maximized by the use of the highest resolution clock or other timing device available at the sending device. This provides the best compensation for wait time tw rounding errors, i.e., rounding the wait time value up or down to the nearest whole number value achievable by the system timing devices.